package com.qf.shopping.service;

import com.qf.shopping.vo.article.ArticleSearch;
import com.qf.shopping.vo.article.ArticleVO;
import com.qf.shopping.pojo.System.User;

import java.util.List;
import java.util.Map;

/**
 * @Author 82024
 * @Date 2019/4/16 17:36
 * @Version 1.0
 * @Description 资讯模块的业务层
 **/
public interface IArticleSericve {

    /**
     * 添加资讯
     * @param articleVO
     * @param user
     */
    void addArticle(ArticleVO articleVO, User user);

    /**
     * 发布资讯
     * @param id
     */
    void publishArticle(Long id, User user);

    /**
     * 编辑资讯
     * @param articleVO
     * @param user
     */
    void editArticle(ArticleVO articleVO, User user);

    /**
     * 根据ID删除资讯
     * @param id
     */
    void deleteArticleById(Long id, User user);

    /**
     * 只查询未提交与未通过的资讯（资讯草稿箱展示）
     * @return
     */
    List<ArticleVO> findSomeArticle(Map<String, Object> map);

    /**
     * 查询所有待审核的资讯（审核资讯时使用）
     * @return
     */
    List<ArticleVO> auditArticle(Map<String, Object> map);

    /**
     * 查询所有的资讯（发布资讯时使用）
     * @return
     */
    List<ArticleVO> publishArticle(Map<String, Object> map);

    /**
     * 查询所有发布了的资讯（资讯列表展示）
     * @return
     */
    List<ArticleVO> findAllArticle(ArticleSearch articleSearch);

    /**
     * 根据ID查找资讯
     * @param id
     * @return
     */
    ArticleVO findArticleById(Long id);

    /**
     * 资讯的审核通过
     * @param id
     * @param user
     */
    void passArticle(Long id, User user);

    /**
     * 资讯的驳回
     * @param id
     * @param msg
     * @param user
     */
    void disableArticle(Long id, String msg, User user);

    /**
     * 资讯的推荐或者取消推荐
     * @param id
     * @param user
     */
    void topArticle(Long id, User user);

    /**
    * 提交资讯
    * @Param
    * @return
    */
    void submitArticle(Long id, User user);
}
